home *** CD-ROM | disk | FTP | other *** search
/ 8bitfiles.net/archives / archives.tar / archives / compuserve-file-archive / 05 Programming / RS232.ARC / MODEM%a4SET.C < prev    next >
Text File  |  2019-04-13  |  3KB  |  158 lines

  1.  
  2. /*
  3.     MODEMñSET.C  HARDWARE AND LOW-LEVEL SOFTWARE
  4.     SETUP CODE FOR TELECOMUNICATIONS.
  5.  
  6. */
  7.  
  8. #INCLUDE <STDIO.H>
  9. #INCLUDE <DEFN.H>
  10. #INCLUDE <TERM.H>
  11.  
  12. EXTERN UNSIGNED PAUSE();
  13. EXTERN CHAR ╟ET╦EY();
  14.  
  15. /*
  16.   DIAL()  DIAL A SINGLE DIGIT 0..9
  17. */
  18.  
  19. DIAL(NUM)
  20. UNSIGNED NUM;
  21.  UNSIGNED REP;
  22.  FOR(REP=0;REP<NUM;REP++)
  23.     █
  24.       ONñHOOK();
  25.       PAUSE(╙╔╪╘┘);    
  26.       OFFñHOOK();
  27.       PAUSE(╞╧╒╥╘┘);
  28.     ▌
  29.  PAUSE(╙╚╧╥╘);
  30.  PAUSE(╠╧╬╟);
  31.  
  32.  
  33.  
  34.  
  35. /*
  36.    ONñHOOK() 
  37. */
  38.  
  39. ONñHOOK()
  40.     POKE(0X0F,0XDD01,(PEEK(0X0F,0XDD01)▀0X20));
  41.  
  42.  
  43.  
  44. /*
  45.   OFFñHOOK()
  46. */
  47.  
  48. OFFñHOOK()
  49.     POKE(0X0F,0XDD03,(PEEK(0X0F,0XDD03)▀0X20));
  50.     POKE(0X0F,0XDD01,(PEEK(0X0F,0XDD01)&0XDF));
  51.  
  52.  
  53.  
  54.  
  55. /*
  56.     ═ñFLUSH()   CLEAR THE RS-232 ╔NPUT/╧UTPUT BUFFERS IN ┬ANK0
  57.     TO ALL ┌ERO'S (0).
  58. */
  59.  
  60.  
  61. ͤFLUSH()
  62.     UNSIGNED POS,BASE;
  63.     BASE = 0X0C00;
  64.     FOR(POS=0;POS<512;POS++)
  65.         POKE(0X0F,BASE+POS,0X00);
  66.  
  67.     POKE(0X0F,0X0A18,00);POKE(0X0F,0X0A19,00);  /* SET RS-232 BUFFER-POINTERS */
  68.     POKE(0X0F,0X0A1A,00);POKE(0X0F,0X0A1B,00);  /* TO SHOW EMPTY BUFFERS      */
  69.  
  70.  
  71.  
  72. /*
  73.     ADJUST() MODIFY BAUD-RATES 
  74. */
  75.  
  76. ADJUST(RATE)
  77. CHAR RATE;
  78.     CHAR COMMAND,
  79.          CONTROL,
  80.          ╚IGHñ┬YTE,
  81.          ╠OWñ┬YTE,
  82.          CH;
  83.     FLOAT ┬AUD,SYSñ├LOCK;
  84.     SYSñ├LOCK = 1.02273E6;
  85.     CONTROL = 0;
  86.     COMMAND = 0;
  87.     ═ñFLUSH();
  88.     IF (RATE ╔╙ñ┼╤╒┴╠ '3')
  89.         █
  90.             ═Oñ╧PEN( 6,0,0,0 ); /* 300 BAUD 1 STOP 8-BITS FULL DUPLEX NO PARITY*/
  91.         ▌  
  92.     ELSE
  93.         █
  94.             ═Oñ╧PEN( 8,0,0,0 ); /* 1200 BAUD SAME AS ABOVE ^  */
  95.         ▌
  96.     PUTC(147);
  97.     PUTS("\N\N   ┬AUD ╥ATE ┴DJUSTMENT...");
  98.     PUTS(" ╒SE ╞1 TO INCREASE BAUD OR ╞3 TO DECRESE IT");
  99.     PUTS(" OR ┼╙├ TO CONTINUE...\N\N\N");
  100.     PUTS("       ╨RESS ╙╨┴├┼...\N");
  101.     WHILE( (CH=╟ET╦EY()) ╬╧╘ñ┼╤╒┴╠ ┼╙├) 
  102.         █
  103.             ╠OWñ┬YTE = PEEK(0X0F,0X0A12);
  104.             ╚IGHñ┬YTE = PEEK(0X0F,0X0A13);
  105.  
  106.             SWITCH(CH)
  107.             █
  108.                 CASE ╞3:  IF (╠OWñ┬YTE <255)
  109.                               ╠OWñ┬YTE++;
  110.                           ELSE
  111.                              █
  112.                               IF (╚IGHñ┬YTE <255)  
  113.                                  █
  114.                                   ╠OWñ┬YTE =0;
  115.                                   ╚IGHñ┬YTE++;  
  116.                                  ▌
  117.                               ELSE
  118.                                  █
  119.                                    ╚IGHñ┬YTE =0;
  120.                                    ╠OWñ┬YTE =0;
  121.                                  ▌ 
  122.                              ▌ ; BREAK;
  123.  
  124.                 CASE ╞1:  IF (╠OWñ┬YTE >0)
  125.                               ╠OWñ┬YTE--;
  126.                           ELSE
  127.                              █
  128.                               IF (╚IGHñ┬YTE >0)  
  129.                                  █
  130.                                   ╠OWñ┬YTE =0;
  131.                                   ╚IGHñ┬YTE--;  
  132.                                  ▌
  133.                               ELSE
  134.                                  █
  135.                                    ╚IGHñ┬YTE =256;
  136.                                    ╠OWñ┬YTE =256;
  137.                                  ▌ 
  138.                              ▌ ; BREAK;
  139.             ▌
  140.         ┬AUD = SYSñ├LOCK / ( 2 * (╚IGHñ┬YTE * 256 + ╠OWñ┬YTE + 100));
  141.         PRINTF("  ┬AUD ╥ATE IS: %04.6F \N%C",┬AUD,145);
  142.         POKE(0X0F,0X0A12,╠OWñ┬YTE);
  143.         POKE(0X0F,0X0A13,╚IGHñ┬YTE);
  144.         ▌
  145.  
  146.  
  147.  
  148.